<!DOCTYPE html>
<html>
  <head>
    <title>Hello React</title>
  </head>
  <body>
    <div id="root"></div>

    <script>
      // 1、this指向window
      console.log(this);
      function Person() {
        console.log(this);
      }
      Person();

      // 自执行
      var self = function (obj) {
        (function (that) {
          console.log("that", that);
          console.log(this);
        })(this);
      };
      var obj = {
        age: 12,
        say: function () {
          /*
          对象下的this指向对象本身，而不是window，但是需要提出来，而不是直接用this，
        */
          console.log(this);

          fn = function () {
            console.log("fn", this);
          };
          fn(); // 调用fn，this指向window

          let that = this;
          fn1 = function () {
            console.log("fn1", that);
          };
          fn1(); // 调用fn1，this指向obj

          function fn2() {
            console.log("fn2", this);
          }
          fn2(); // 直接调用fn2，this指向window
        },
        self: self,
      };
      obj.say(); // 调用obj的say方法，this指向obj
      obj.self();
    </script>
  </body>
</html>
